package com.leetcode.www;

import java.util.Scanner;

/**
 * Creared with IntelliJ IDEA.
 * Description:给你一个长度为 n 的字符串 keysPressed ，其中 keysPressed[i] 表示测试序列中第 i 个被按下的键。releaseTimes 是一个升序排列的列表，其中 releaseTimes[i] 表示松开第 i 个键的时间。字符串和数组的 下标都从 0 开始 。第 0 个键在时间为 0 时被按下，接下来每个键都 恰好 在前一个键松开时被按下。
 *
 * 测试人员想要找出按键 持续时间最长 的键。第 i 次按键的持续时间为 releaseTimes[i] - releaseTimes[i - 1] ，第 0 次按键的持续时间为 releaseTimes[0] 。
 *
 * 注意，测试期间，同一个键可以在不同时刻被多次按下，而每次的持续时间都可能不同。
 *
 * 请返回按键 持续时间最长 的键，如果有多个这样的键，则返回 按字母顺序排列最大 的那个键。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/slowest-key
 *
 * User:yxd
 * Date:2022-01-09
 * Time:15:41
 */
public class Everday1629 {
    //官方的
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String keysPressed = input.next();
        int[] releaseTimes = new int[keysPressed.length()];
        for (int i = 0; i < releaseTimes.length; i++) {
            releaseTimes[i] = input.nextInt();
        }
        int x = keysPressed.length();
        int maxtime = releaseTimes[0];
        char ch  = keysPressed.charAt(0);
        for (int i = 1; i < x; i++) {// 遍历整个数组（按键时间）
            int time = releaseTimes[i] - releaseTimes[i -1];//把每一个按键的时间算出来

            if(time > maxtime || (time == maxtime && keysPressed.charAt(i) > ch)){
                //存在时间长的就记录下来，如果有相等的就记录其字母顺序较大的字母
                maxtime = time;
                ch = keysPressed.charAt(i);
            }

        }
        System.out.println(ch);
    }
    //自己写的
    public char slowestKey(int[] releaseTimes, String keysPressed) {
        int x = keysPressed.length();
        int[] a = new int[x];
        a[0] = releaseTimes[0];
        for(int i = 1;i < x;i ++){//将所有的按键时间先算出来
            a[i] = releaseTimes[i] - releaseTimes[i - 1];
        }
        int index = 0;
        for(int i = 0; i < x; i++){//遍历这个数组
            if(a[i] > a[index]){
                index = i;
            }
            if(a[index] == a[i]){//如果有相同时间的就返回字母顺序排列较大的值
                if(keysPressed.charAt(i) > keysPressed.charAt(index)){
                    index = i;
                }

            }
        }
        return keysPressed.charAt(index);
    }
}
